package kino;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.modeliosoft.modelio.javadesigner.annotations.objid;

public class Angestellter extends Person {
    @objid ("0c841d09-7ca3-11e1-ac6f-0024d7607540")
    public Filiale Filiale;
    
    @objid ("d93f0686-94ff-11e1-b35a-0024d7607540")
    private int id;
    
    private int personid;
  
    private Date angestelltSeit;

    @objid ("a02b98c8-849e-11e1-89d4-0024d7607540")
    private String Funktion;

    @objid ("23fa192a-7ca3-11e1-ac6f-0024d7607540")
    public List<Angestellter> Vorgesetzte = new ArrayList<Angestellter> ();

    @objid ("23f7b7c4-7ca3-11e1-ac6f-0024d7607540")
    public List<Angestellter> Untergebene = new ArrayList<Angestellter> ();

    @objid ("d94167f3-94ff-11e1-b35a-0024d7607540")
    public int getId() {
        return id;
    }

    @objid ("d94167f7-94ff-11e1-b35a-0024d7607540")
    public void setId(final int id) {
        this.id = id;
    }

    public Date getAngestelltSeit() {
        // Automatically generated method. Please delete this comment before entering specific code.
        return this.angestelltSeit;
    }

    public void setAngestelltSeit(final Date value) {
        // Automatically generated method. Please delete this comment before entering specific code.
        this.angestelltSeit = value;
    }

    public String getFunktion() {
        // Automatically generated method. Please delete this comment before entering specific code.
        return this.Funktion;
    }

    public void setFunktion(final String value) {
        // Automatically generated method. Please delete this comment before entering specific code.
        this.Funktion = value;
    }

    public Angestellter(final String nachname, final String vorname, final Date geburtsdatum, final char geschlecht, 
    					final Date angestelltSeit, final String funktion, final Filiale filiale) {
        super(nachname, vorname, geburtsdatum, geschlecht);
        this.angestelltSeit = angestelltSeit;
        this.Filiale = filiale;
        Funktion = funktion;
    }

    public String toString() {
        return "Nachname:" + nachname +" Vorname:"+ vorname+
                " Geschlecht:"+geschlecht+ " Geburtsdatum:"+ geburtsdatum+
                " angestelltSeit:" + angestelltSeit + " Funktion:" + Funktion;
    }

    @objid ("d93f0687-94ff-11e1-b35a-0024d7607540")
    public Filiale getFiliale() {
        return Filiale;
    }

    @objid ("d93f068b-94ff-11e1-b35a-0024d7607540")
    public void setFiliale(final Filiale filiale) {
        Filiale = filiale;
    }

    @objid ("d93f068e-94ff-11e1-b35a-0024d7607540")
    public List<Angestellter> getVorgesetzte() {
        return Vorgesetzte;
    }

    @objid ("d93f0694-94ff-11e1-b35a-0024d7607540")
    public void setVorgesetzte(final List<Angestellter> vorgesetzte) {
        Vorgesetzte = vorgesetzte;
    }

    @objid ("d94167e8-94ff-11e1-b35a-0024d7607540")
    public List<Angestellter> getUntergebene() {
        return Untergebene;
    }

    @objid ("d94167ee-94ff-11e1-b35a-0024d7607540")
    public void setUntergebene(final List<Angestellter> untergebene) {
        Untergebene = untergebene;
    } 
    
    public void addUntergebener(final Angestellter untergebener) {
    	Untergebene.add(untergebener);
    	boolean datenVorhanden=false;
    	for(int i=0; i<untergebener.getVorgesetzte().size(); i++){
        	if (untergebener.getVorgesetzte().get(i).getVorname()==this.getVorname() 
        			&& untergebener.getVorgesetzte().get(i).getNachname()==this.getNachname()
        			&& untergebener.getVorgesetzte().get(i).getGeburtsdatum()==this.getGeburtsdatum())
        	{
        				datenVorhanden=true;
        	}
        }
    	if(!datenVorhanden){
    		untergebener.addVorgesetzter(this);
    	}
    }
    
    public void addVorgesetzter(final Angestellter vorgesetzter) {
    	Vorgesetzte.add(vorgesetzter);
    	boolean datenVorhanden=false;
    	for(int i=0; i<vorgesetzter.getUntergebene().size(); i++){
        	if (vorgesetzter.getUntergebene().get(i).getVorname()==this.getVorname() 
        			&& vorgesetzter.getUntergebene().get(i).getNachname()==this.getNachname()
        			&& vorgesetzter.getUntergebene().get(i).getGeburtsdatum()==this.getGeburtsdatum())
        	{
        				datenVorhanden=true;
        	}
        }
    	if(!datenVorhanden){
    		vorgesetzter.addUntergebener(this);
    	}
    }

	public int getPersonid() {
		return personid;
	}

	public void setPersonid(int personid) {
		this.personid = personid;
	}

}
